// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
import router from '@/router';
import Navigation from 'vue-navigation';
import store from './store';
import axios from 'axios';
import io from 'socket.io-client';
import Mint from 'mint-ui';
import 'mint-ui/lib/style.css';
import '@/styles/common.css';
import App from '@/App';
import util from '@/util/Util';

Vue.use(Mint);
Vue.prototype.$axios = axios;
Vue.prototype.$io = io;
Vue.prototype.$socket = Vue.prototype.$io(util.getChatUrl());
Vue.config.productionTip = false;

// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时...
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})

// 请求拦截（配置发送请求的信息）
axios.interceptors.request.use(function (config) {
  // 处理请求之前的配置
  return config;
}, function (error) {
  // 请求失败的处理
  return Promise.reject(error);
});

// 响应拦截（配置请求回来的信息）
axios.interceptors.response.use(function (response) {
  // 处理响应数据
  return response;
}, function (error) {
  // 处理响应失败
  if (error.response.status == 403) {
    router.push('/signIn');
  }
  return Promise.reject(error);
});

Vue.use(Navigation, {
  router,
  store
});

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: {
    App
  },
  template: '<App/>'
});
